package metier.jdbc.stage;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import metier.CategorieStage;
import configuration.MessageAppli;

public class CategorieStageJdbc {
/**
 * Permet d'ajouter une categorieStage
 * @param c
 * @param uneCategorieStage
 * @return boolean
 */	
public static boolean ajouter(Connection c, CategorieStage uneCategorieStage) {
	//Préparer la requete sql 
	//Retourne un entier égal à 1 
	//Si l’insertion en base de données a été réalisée
			
	int res = 0;
	try
	{
		PreparedStatement ps=c.prepareStatement("INSERT INTO categoriestage (idcategorie, libellecat) VALUES (?,?)");
				
		//Affecter les values correspondant aux colonnes
		ps.setInt(1, uneCategorieStage.getIdCategorie());
		ps.setString(2, uneCategorieStage.getLibelleCat());
			
		res = ps.executeUpdate();
		ps.close();
	}
	catch (SQLException e)
	{
		e.printStackTrace();
		JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_REQUETE,
		MessageAppli.MSG_BDD_TITRE_ERREUR, JOptionPane.ERROR_MESSAGE);
	}
	return res==1;
}

/**
 * Permet de modifier une categorieStage
 * @param c
 * @param uneCategorieStage
 * @return boolean
 */
public static boolean modifier(Connection c, CategorieStage uneCategorieStage) {
	//Préparer la requete sql 
	//Retourne un entier égal à 1 
	//Si la modification en base de données a été réalisée
			
	int res = 0;
	if ( uneCategorieStage.getIdCategorie() != null )
	{
		try
		{
			PreparedStatement ps=c.prepareStatement(
			"UPDATE categoriestage set libellecat = ? WHERE idcategorie = ?");
					
			//Affecter les values correspondant aux colonnes
			ps.setString(1, uneCategorieStage.getLibelleCat());
			ps.setInt(2, uneCategorieStage.getIdCategorie());
				
			res = ps.executeUpdate();
			ps.close();
			return res == 1;
		}
		catch (SQLException e)
		{
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_REQUETE,
					MessageAppli.MSG_BDD_TITRE_ERREUR, JOptionPane.ERROR_MESSAGE);
		}
	}
	return false;	
}

/**
 * Permet de supprimer l'affectation d'un eleve.
 * @param c
 * @param uneAffectation
 * @return boolean
 */
public static boolean supprimer(Connection c, CategorieStage uneCategorieStage) {
	//Préparer la requete sql 
	//Retourne un entier égal à 1 
	//Si la suppression en base de données a été réalisée
			
	int res = 0;
	try
	{
		PreparedStatement ps=c.prepareStatement("DELETE FROM categoriestage WHERE idcategorie = ?");
				
		//Affecter les values correspondant aux colonnes
		ps.setInt(1, uneCategorieStage.getIdCategorie());
			
		res = ps.executeUpdate();
		ps.close();
		return res == 1;
	}
	catch (SQLException e)
	{
		e.printStackTrace();
		JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_REQUETE,
				MessageAppli.MSG_BDD_TITRE_ERREUR, JOptionPane.ERROR_MESSAGE);
	}
	return false;
}

/**
 * Renvoi la liste des CategorieStage
 * @param c
 * @return ArrayList<CategorieStage>
 */
public static ArrayList<CategorieStage> getListeCategorieStage(Connection c){
	ArrayList<CategorieStage> listeCategorieStage = new ArrayList<CategorieStage>();
	
	try
	{
		PreparedStatement ps = c.prepareStatement("SELECT * FROM categoriestage");
		ResultSet res = ps.executeQuery();
		
		while(res.next())
		{
			listeCategorieStage.add(new CategorieStage(res.getInt("idcategorie"),res.getString("libellecat")));
		}
	}
	catch (SQLException e)
	{
		e.printStackTrace();
		JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_REQUETE,
				MessageAppli.MSG_BDD_TITRE_ERREUR, JOptionPane.ERROR_MESSAGE);
	}
	return listeCategorieStage;
}

/**
 * Renvoi la CategorieStage correspondant à l'idCategorie donné
 * @param c
 * @return CategorieStage
 */
public static CategorieStage rechercherById(Connection c, Integer idCategorieStage){
	CategorieStage uneAuCategorieStage = null;
	
	if(idCategorieStage!=null)
	{
		try
		{
			PreparedStatement ps = c.prepareStatement("SELECT * FROM categoriestage where idcategorie=?");
			ps.setInt(1, idCategorieStage);				
			ResultSet res = ps.executeQuery();
					
			if(res.next())
			{
				uneAuCategorieStage= new CategorieStage(res.getInt("idcategorie"),res.getString("libellecat"));
			}
			ps.close();
		}
		catch (SQLException e)
		{
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_REQUETE,
				MessageAppli.MSG_BDD_TITRE_ERREUR, JOptionPane.ERROR_MESSAGE);
		}
	}
	return uneAuCategorieStage;
}

/**
 * Renvoi la CategorieStage correspondant au lib CategorieStage donné
 * @param c
 * @return CategorieStage
 */
public static CategorieStage rechercherByNom(Connection c, String libelleCategorieStage){
	CategorieStage uneAuCategorieStage = new CategorieStage(null, null);
	
	if(libelleCategorieStage!=null)
	{
		try
		{
			PreparedStatement ps = c.prepareStatement("SELECT * FROM categoriestage WHERE libellecat=?");
			ps.setString(1, libelleCategorieStage);
			ResultSet res = ps.executeQuery();
			
			if(res.next())
			{
				uneAuCategorieStage = new CategorieStage(res.getInt("idcategorie"),res.getString("libellecat"));
			}
			ps.close();
		}
		catch (SQLException e)
		{
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_REQUETE,
				MessageAppli.MSG_BDD_TITRE_ERREUR, JOptionPane.ERROR_MESSAGE);
		}
	}
	return uneAuCategorieStage;
}
}
